#ifndef PROTOCOLO_H
#define PROTOCOLO_H

#include "socket.h"
#include "imsgent.h"
#include "imsgsal.h"
#include "ParserDeJugadas.h"
#include "Jugador.h"
#include "Mensaje.h"
#include <string>

using namespace red::sockets;
using namespace red::protocolo;
using namespace red::protocolo::mensajes::entrada;
using namespace red::protocolo::mensajes::salida;
using namespace std;

class JuegoServerImp;

namespace red {
namespace protocolo {

class Protocolo {

public:
	//TODO:to remove
    Protocolo(Socket *p_pSocket) : m_pSocket(p_pSocket) {};

	Protocolo(Socket *p_pSocket, JuegoServerImp* juego, Jugador* jugador, Mutex* mutex_juego);
    ~Protocolo();
	bool bEnviarPaquete(const string &p_sBuffer);
	bool bEnviarMensaje(IMsgSal *p_pMsgSal);
	bool EnviarMensaje(Mensaje& mensaje);
	bool bRecibirMensaje();
	Jugador* getJugador();
private:


	bool bRecibirPaquete(string &p_sPaquete);

	Socket *m_pSocket;
	JuegoServerImp* juego;
	Mutex* mutex_juego;
	Jugador* jugador;
};

}
}

#endif
